	package dao;
	
	import gestores.GestorBD;
	
	import java.sql.ResultSet;
	import java.sql.SQLException;

	
	
	public class DAO_Competencia {
	
		
		private static DAO_Competencia INSTANCE = null;
		 /**
	    * constructor
	    */
	   private DAO_Competencia() {
			
		}
	      
	   /**
	    *  Metodo para obtener una instancia, si existe la devuelve, sino la crea
	    * @return instancia si existe
	    */
	   public static DAO_Competencia getInstance(){
			if (INSTANCE == null) { 
	           INSTANCE = new DAO_Competencia();
	         }
			return INSTANCE;
	   }
	   
	   public ResultSet buscarCompetencias(String nombre, String modalidad, String deporte, String estado, String correo){
		   return GestorBD.getInstance().ejecutar("SELECT `competencia`.`nombre`, `deporte`.`nombreDeporte`, `modalidad`.`tipo_modalidad`, `competencia`.`estado`" +
		   		"FROM `competencia`, `deporte`, `modalidad`, `usuario_registrado`" +
		   		"WHERE "+nombre+" AND "+estado+ "AND "+deporte+" AND "+modalidad+" " +
		   		"AND `competencia`.`id_modalidad`=`modalidad`.`id_modalidad` AND `competencia`.`id_deporte`=`deporte`.`id_deporte` " +
		   		"AND `usuario_registrado`.`correo`='"+correo+"' AND `competencia`.`id_usuario`=`usuario_registrado`.`id_usuario` AND `competencia`.`eliminada`=0");
	   }
	
	public ResultSet buscarIDCompetencia(String nombre) throws SQLException {
		return GestorBD.getInstance().ejecutar("SELECT `competencia`.`id_competencia` FROM `competencia`WHERE `competencia`.`nombre`='"+nombre+"' AND `competencia`.`eliminada`='0';");
		
	}
	
	public void actualizarEstado(String nombreCompetencia, String estado) {
		GestorBD.getInstance().actualizar("UPDATE `competencia` SET `estado` = '"+estado+"' WHERE `competencia`.`nombre` = '"+nombreCompetencia+"' AND `competencia`.`eliminada`='0'");
		
	}
	
	
	 
	public ResultSet buscarCompetencias(String nombre){
		return GestorBD.getInstance().ejecutar("SELECT `deporte`.`nombreDeporte`, `competencia`.`estado`, `competencia`.`nombre`, `competencia`.`reglamento`, `modalidad`.`tipo_modalidad`, `modalidad`.`empate`, `modalidad`.`ptos_por_empate`, `modalidad`.`ptos_por_presentarse`, `modalidad`.`ptos_por_ganar`, `modalidad`.`goles_a_favor`, `puntuacion`.`tipo_puntuacion`, `puntuacion`.`cant_sets`" +
				"FROM `deporte`, `competencia`, `modalidad`, `puntuacion` WHERE `competencia`.`nombre`='"+nombre+"'AND `competencia`.`id_deporte`= `deporte`.`id_deporte` AND `competencia`.`id_modalidad`=`modalidad`.`id_modalidad` AND `modalidad`.`id_puntuacion`=`puntuacion`.`id_puntuacion` AND `competencia`.`eliminada`='0'");
	}
	
	public ResultSet getMaxIdEncuentro() {
		// TODO Auto-generated method stub
		return GestorBD.getInstance().ejecutar("SELECT MAX(`encuentro`.`id_encuentro`) FROM `encuentro`");
	}
	
	public void insetarResultado(int id_encuentro, String tipoPuntuacion) {
		// TODO Auto-generated method stub
		
		GestorBD.getInstance().actualizar("INSERT INTO `resultado` (`id_resultado`, `resultado_part1`, `resultado_part2`, `tipo_resultado`, `eliminada`) VALUES ("+ id_encuentro +", "+ id_encuentro +", "+ id_encuentro +", '"+ tipoPuntuacion +"', '0')");
		
	}
	
	
	
	public ResultSet validarNombre(String nombre){
		return GestorBD.getInstance().ejecutar("SELECT `nombre` FROM `competencia` WHERE `competencia`.`nombre`= " + "'" + nombre + "'" + "AND `competencia`.`eliminada`='0'");		
		
	}
	
	public void eliminarEncuentro(String id_resultado) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar("UPDATE `encuentro` " +
				"SET `eliminada` = '1' " +
				"WHERE `encuentro`.`id_resultado` = '"+id_resultado+"'");
	}

	public void eliminarResultado(String id_resultado) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar(" UPDATE `resultado`" +
				"SET `eliminada` = '1'" +
				" WHERE `resultado`.`id_resultado` = '"+ id_resultado+"'");
	}

	public void eliminarResultadoPart1(String resultado_part1) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar("UPDATE `resultado_part1` " +
				"SET `eliminada` = '1'" +
				"WHERE `resultado_part1`.`id_resultado_part1` = '"+ resultado_part1 +"'");
	}
	
	
	public void eliminarResultadoPart2(String resultado_part2) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar("UPDATE `resultado_part2` " +
				"SET `eliminada` = '1'" +
				"WHERE `resultado_part2`.`id_resultado_part2` = '"+ resultado_part2 +"'");
	}
	
 
	public void actualizarResultadoFinalPart1(int fecha, int encuentro, String ganador, String perdedor ,String nombreComp){
		GestorBD.getInstance().actualizar("UPDATE `resultado_part1` " +
				"SET `ganador` = '"+ganador+"', `perdedor` = '"+perdedor+"'" +
				"WHERE `id_resultado_part1` IN(SELECT `id_encuentro` FROM `encuentro` , `competencia`" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"'" +
				"AND `competencia`.`nombre`='"+nombreComp+"'" +
				"AND `competencia`.`id_competencia`=`encuentro`.`id_competencia`" +
				"AND `competencia`.`eliminada`='0' AND `encuentro`.`eliminada`='0')");
	}
	
	public void actualizarResultadoFinalPart2(int fecha, int encuentro, String ganador, String perdedor ,String nombreComp){
		GestorBD.getInstance().actualizar("UPDATE `resultado_part2`" +
				"SET `ganador` = '"+ganador+"', `perdedor` = '"+perdedor+"' " +
				"WHERE `id_resultado_part2` IN(SELECT `id_encuentro` FROM `encuentro` , `competencia`" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"'" +
				"AND `competencia`.`nombre`='"+nombreComp+"'" +
				"AND `competencia`.`id_competencia`=`encuentro`.`id_competencia`" +
				"AND `competencia`.`eliminada`='0'" +
				"AND `encuentro`.`eliminada`='0')");
	}
	
	public void actualizarResultadoPuntuacionPart1(int fecha, int encuentro, int puntos ,String nombreComp){
		GestorBD.getInstance().actualizar("UPDATE `resultado_part1` " +
				"SET `puntuacion` = '"+ puntos +"' WHERE `id_resultado_part1` IN(SELECT `id_encuentro` " +
				"FROM `encuentro` , `competencia`" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"'" +
				"AND `competencia`.`nombre`='"+nombreComp+"'" +
				"AND `competencia`.`id_competencia`=`encuentro`.`id_competencia`" +
				"AND `competencia`.`eliminada`='0'" +
				"AND `encuentro`.`eliminada`='0')");
	}
	
	public void actualizarResultadoPuntuacionPart2(int fecha, int encuentro, int puntos ,String nombreComp){
		GestorBD.getInstance().actualizar("UPDATE `resultado_part2` " +
				"SET `puntuacion` = '"+ puntos +"' WHERE `id_resultado_part2` IN(SELECT `id_encuentro` " +
				"FROM `encuentro` , `competencia`" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"'" +
				"AND `competencia`.`nombre`='"+nombreComp+"'" +
				"AND `competencia`.`id_competencia`=`encuentro`.`id_competencia`" +
				"AND `competencia`.`eliminada`='0'" +
				"AND `encuentro`.`eliminada`='0')");
	}
	
	public void actualizarResultadoSetsPart1(int fecha, int encuentro, int[] sets,String nombreComp){
		GestorBD.getInstance().actualizar("UPDATE `resultado_part1` SET `set_1` = '"+sets[0]+"', `set_2` = '"+sets[1]+"', " +
				"`set_3` = '"+sets[2]+"', `set_4` = '"+sets[3]+"', `set_5` = '"+sets[4]+"', `set_6` = '"+sets[5]+"', `set_7` = '"+sets[6]+"', `set_8` = '"+sets[7]+"', `set_9` = '"+sets[8]+"'" +
				"WHERE `id_resultado_part1` IN(SELECT `id_encuentro` FROM `encuentro` , `competencia`" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"'" +
				"AND `competencia`.`nombre`='"+nombreComp+"'" +
				"AND `competencia`.`id_competencia`=`encuentro`.`id_competencia`" +
				"AND `competencia`.`eliminada`='0'" +
				"AND `encuentro`.`eliminada`='0')");
	}

	public void actualizarResultadoSetsPart2(int fecha, int encuentro, int[] sets,String nombreComp){
		GestorBD.getInstance().actualizar("UPDATE `resultado_part2` SET `set_1` = '"+sets[0]+"', `set_2` = '"+sets[1]+"', " +
				"`set_3` = '"+sets[2]+"', `set_4` = '"+sets[3]+"', `set_5` = '"+sets[4]+"', `set_6` = '"+sets[5]+"', `set_7` = '"+sets[6]+"', `set_8` = '"+sets[7]+"', `set_9` = '"+sets[8]+"'" +
				"WHERE `id_resultado_part2` IN(SELECT `id_encuentro` FROM `encuentro` , `competencia`" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"'" +
				"AND `competencia`.`nombre`='"+nombreComp+"'" +
				"AND `competencia`.`id_competencia`=`encuentro`.`id_competencia`" +
				"AND `competencia`.`eliminada`='0'" +
				"AND `encuentro`.`eliminada`='0')");
	}

	public void setearAsistenciaParticipantes(int encuentro, int fecha, String asistioPart1, String asistioPart2, String id_competencia) {
		GestorBD.getInstance().actualizar("UPDATE `encuentro` SET `asistio_part1`='"+asistioPart1+"',`asistio_part2`='"+asistioPart2+"'" +
				"WHERE `encuentro`.`numero_encuentro`='"+encuentro+"'" +
				"AND `encuentro`.`fecha`='"+fecha+"' AND `encuentro`.`id_competencia` = '"+id_competencia+"' " +
				"AND `encuentro`.`eliminada`='0'");
				
	
	}
	
}


















